package cn.reineko.csmall.passport.mapper;

import cn.reineko.csmall.passport.pojo.entity.Admin;
import cn.reineko.csmall.passport.pojo.vo.AdminListItemVO;
import cn.reineko.csmall.passport.pojo.vo.AdminStandardVO;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 管理员的Mapper接口
 *
 * @author reineko
 * @version 1.0.0
 */
@Repository
public interface AdminMapper {

    /**
     * 添加一个管理员
     * @param admin 必须封装需要插入的管理员的数据
     * @return 受影响的行数
     */
    int insert(Admin admin);

    /**
     * 根据id删除管理员的账号
     * @param id 尝试删除的管理员id值
     * @return 受影响的行数
     */
    int deleteById(Long id);

    /**
     * 根据管理员id修改管理员的账号信息
     * @param admin 必须封装需要修改的管理员的id值，以及需要修改的字段的新的值
     * @return 受影响的行数
     */
    int updateById(Admin admin);

    /**
     * 根据用户名统计管理员的数据条数
     * @param username 需统计的用户名信息
     * @return 符合条件的管理员的数据条数
     */
    int countByUsername(String username);

    /**
     * 根据电话号码统计管理员的数据条数
     * @param phone 需统计的电话信息
     * @return 符合条件的管理员的数据条数
     */
    int countByPhone(String phone);

    /**
     * 根据邮箱统计管理员的数据条数
     * @param email 需统计的邮箱信息
     * @return 符合条件的管理员的数据条数
     */
    int countByEmail(String email);

    /**
     * 根据管理员id查询管理员的账号信息
     * @param id 尝试查询的管理员的id值
     * @return 匹配对应id值的管理员的账号信息，如果没有匹配则返回null
     */
    AdminStandardVO getStandardVO(Long id);

    /**
     * 查询所有管理员的数据
     * @return 查询出所有的管理员信息，并封装到List集合返回
     */
    List<AdminListItemVO> list();

}
